0001 0000 ;------------------------------------------------------ 0002 0000 ; 0003 0000 ; Monitor multi-firmware per start-up 0004 0000 ; computer Z80 Nuova Elettronica 0005 0000 ; 0006 0000 ; Copyright Roberto Bazzano 2006 - 2022 0007 0000 ; 0008 0000 ;------------------------------------------------------ 0009 0000 ; 0010 0000 ; BANCHI 2 e 3 - Allocati da F800h a FFFFh 0011 0000 ; 0012 0000 ; NOTA: durante tutto il codice il registro B' contiene 00h se c'è la scheda video vecchia. Se non c'è contiene FFh 0013 0000 ; Il registro C' contiene il numero della pagina di menù visualizzata a video 0014 0000 ; 0015 0000 ;------------------------------------------------------ 0016 0000 ; .org 00000h ; solo per debug con simulatore 0017 0000 ;------------------------------------------------------ 0018 0000 0019 0000 #define version "1.3" ; versione programma 0020 0000 #define anno "2022" ; anno finale del copyright 0021 0000 0022 0000 banco .equ 05fh ; porta di I/O per la selezione del banco di memoria della EPROM 0023 0000 0024 0000 lf060 .equ 0f060h ; routine f060h della eprom 2390 (carica in R14, R15, R18 e R19 l'indirizzo (HL) del cursore e del carattere da visualizzare) 0025 0000 lf06e .equ 0f06eh ; routine f06eh della eprom 2390 (carica in R18 e R19 l'indirizzo (HL) del carattere da visualizzare) 0026 0000 lf0a5 .equ 0f0a5h ; routine f0a5h della eprom 2390 (inizializza i registri del SY6545 ed i PIO) 0027 0000 0028 F800 .org 0f800h 0029 F800 0030 F800 0031 F800 ; JUMP table 0032 F800 C3 09 F8 jp start ; F800h inizio firmware 0033 F803 C3 B6 FD jp input ; F803h routine input da tastiere 0034 F806 C3 76 FE jp video ; F806h routine output video 0035 F809 0036 F809 0037 F809 F3 start: di ; disabilita gli interrupt 0038 F80A 21 ED 45 ld hl,045edh ; inizializza il vettore per l'NMI 0039 F80D 22 66 00 ld (0066h),hl ; mettendo l'istruzione RETN (ED 45) 0040 F810 0041 F810 AF xor a ; spegne il motore del floppy 0042 F811 D3 D6 out (0d6h),a 0043 F813 0044 F813 21 FF EB ld hl,0ebffh ; cerca dove posizionare lo SP prima di EC00 0045 F816 7E sp1: ld a,(hl) 0046 F817 2F cpl 0047 F818 77 ld (hl),a 0048 F819 BE cp (hl) 0049 F81A 28 03 jr z,sp3 0050 F81C 2B sp2: dec hl 0051 F81D 18 F7 jr sp1 0052 F81F 2F sp3: cpl 0053 F820 77 ld (hl),a 0054 F821 BE cp (hl) 0055 F822 20 F8 jr nz,sp2 0056 F824 F9 ld sp,hl 0057 F825 0058 F825 3E 01 ld a,01h ; seleziona il banco della 2390. ATTENZIONE: questo banco deve rimanere sempre selezionato fino all'uscita del firmware, serve per l'output sul video nuovo 0059 F827 D3 5F out (banco),a 0060 F829 CD A5 F0 call lf0a5 ; inizializza i registri del SY6545 ed i PIO 0061 F82C 0062 F82C CD 58 F9 call checv ; imposta il registro B' che indica se esiste la scheda video vecchia 0063 F82F 0064 F82F 21 66 FD tast0: ld hl,out0 ; visualizza il messaggio "SELECT" sui display 0065 F832 CD 4F FA call msg 0066 F835 0067 F835 CD C4 F9 call vmenu1 ; pulisce i video e visualizza il menù 0068 F838 0069 F838 CD B6 FD tast0a: call input ; input da tastiere 0070 F83B FE 10 cp 10h 0071 F83D 28 1C jr z,tast0d ; se è stato premuto CR salta subito al controllo del tasto 0072 F83F 30 F7 jr nc,tast0a ; se è maggiore di F looppa 0073 F841 FE 01 cp 01h 0074 F843 38 F3 jr c,tast0a ; se è minore di 1 looppa 0075 F845 0076 F845 21 64 FD ld hl,curs ; calcola la posizione sul video vecchio per visualizzare il numero digitato 0077 F848 CD 25 FA call vloc ; calcola in DE l'indirizzo del video in base alla riga/colonna nella locazione puntata da HL e HL+1 0078 F84B 0079 F84B F5 push af ; visualizza il numero digitato 0080 F84C FE 0A cp 0Ah 0081 F84E 30 04 jr nc,tast0b ; se A >= 0ah addiziona 037h, altrimenti 030h 0082 F850 C6 30 add a,030h 0083 F852 18 02 jr tast0c 0084 F854 C6 37 tast0b: add a,037h 0085 F856 12 tast0c: ld (de),a ; sul video vecchio 0086 F857 CD 09 FA call writen ; e sul video nuovo - Il cursore è già posizionato 0087 F85A F1 pop af 0088 F85B 0089 F85B 21 C4 FE tast0d: ld hl,tabtas ; calcola il puntatore alla tabella di jump in HL 0090 F85E 3D dec a ; decrementa A, lo moltiplica per 2 e lo addiziona ad HL 0091 F85F CB 27 sla a 0092 F861 4F ld c,a 0093 F862 AF xor a 0094 F863 47 ld b,a 0095 F864 09 add hl,bc ; HL ora punta all'indirizzo da richiamare che è presente nella tabella "tabtas" 0096 F865 4E ld c,(hl) ; carica il contenuto dell'indirizzo puntato da HL in BC 0097 F866 23 inc hl 0098 F867 46 ld b,(hl) 0099 F868 C5 push bc ; sposta BC su HL 0100 F869 E1 pop hl 0101 F86A E9 jp (hl) ; salta alla routine "tastX" calcolata 0102 F86B 0103 F86B tast1: ; se 1 lancia il boot del basic da 5.5 K 0104 F86B 21 A6 FD ld hl,out10 ; messaggio da visualizzare sul display 0105 F86E CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0106 F871 3E 19 ld a,19h ; seleziona il banco del basic da 5.5 K su floppy 0107 F873 D3 5F out (banco),a 0108 F875 C3 00 F0 jp 0f000h 0109 F878 0110 F878 tast2: ; se 2 lancia il boot vecchio 0111 F878 21 6E FD ld hl,out1 ; messaggio da visualizzare sul display 0112 F87B CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0113 F87E 3E 00 ld a,00h ; seleziona il banco della 1390 0114 F880 D3 5F out (banco),a 0115 F882 C3 00 F0 jp 0f000h 0116 F885 0117 F885 tast3: ; se 3 lancia il boot grafic 0118 F885 21 76 FD ld hl,out2 ; messaggio da visualizzare sul display 0119 F888 CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0120 F88B 3E 01 ld a,01h ; seleziona il banco della 2390 0121 F88D D3 5F out (banco),a 0122 F88F C3 00 F0 jp 0f000h 0123 F892 0124 F892 tast4: ; se 4 lancia il boot del S.O.N.E. 0125 F892 21 AE FD ld hl,out11 ; messaggio da visualizzare sul display 0126 F895 CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0127 F898 3E 1A ld a,1Ah ; seleziona il banco del s.o.n.e. 0128 F89A D3 5F out (banco),a 0129 F89C C3 00 F0 jp 0f000h 0130 F89F 0131 F89F tast5: ; se 5 lancia il basic in rom rilocato in ram 0132 F89F 21 7E FD ld hl,out3 ; messaggio da visualizzare sul display 0133 F8A2 CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0134 F8A5 3E 08 ld a,08h ; seleziona il primo banco del basic in rom 0135 F8A7 11 00 00 ld de,00000h 0136 F8AA 0137 F8AA CD 4D F9 tast5a: call setban ; sposta gli 8 banchi da 2K in ram 0138 F8AD 3C inc a 0139 F8AE 3C inc a 0140 F8AF FE 18 cp 18h 0141 F8B1 20 F7 jr nz,tast5a 0142 F8B3 C3 00 00 jp 0000h ; salta al basic 0143 F8B6 0144 F8B6 tast6: ; se 6 lancia il monitor esadecimale originale non rilocato 0145 F8B6 CD 41 F9 call disp1 ; non visualizza alcun messaggio sui display e inizializza i video 0146 F8B9 3E 04 ld a,04h ; seleziona il banco del monitor esadecimale originale 0147 F8BB 11 00 80 ld de,08000h ; seleziona il banco indicato da A e lo sposta in ram 0148 F8BE CD 4D F9 call setban 0149 F8C1 C3 00 80 jp 8000h 0150 F8C4 0151 F8C4 tast7: ; se 7 lancia il monitor esadecimale non rilocato con lo SP rilocato prima di EC00 con il firmware non rilocato per il programmatore di eprom 0152 F8C4 CD 41 F9 call disp1 ; non visualizza alcun messaggio sui display e inizializza i video 0153 F8C7 3E 20 ld a,20h ; seleziona il banco del monitor esadecimale con SP rilocato 0154 F8C9 11 00 80 ld de,08000h ; seleziona il banco indicato da A e lo sposta in ram 0155 F8CC CD 4D F9 call setban 0156 F8CF C3 00 80 jp 8000h 0157 F8D2 0158 F8D2 tast8: ; se 8 lancia il monitor esadecimale rilocato con lo SP rilocato prima di EC00 per la tastiera alfanumerica con il firmware rilocato per il programmatore di eprom 0159 F8D2 21 86 FD ld hl,out4 ; messaggio da visualizzare sul display 0160 F8D5 CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0161 F8D8 3E 1C ld a,1Ch ; seleziona il banco del monitor esadecimale rilocato per la tastiera alfanumerica 0162 F8DA D3 5F out (banco),a 0163 F8DC C3 00 F0 jp 0f000h 0164 F8DF 0165 F8DF tast9: ; se 9 lancia il monitor esadecimale rilocato con lo SP rilocato prima di EC00 per la tastiera esadecimale con il firmware rilocato per il programmatore di eprom 0166 F8DF CD 41 F9 call disp1 ; non visualizza alcun messaggio sui display e inizializza i video 0167 F8E2 3E 1E ld a,1Eh ; seleziona il banco del monitor esadecimale rilocato per la tastiera esadecimale 0168 F8E4 D3 5F out (banco),a 0169 F8E6 C3 00 F0 jp 0f000h 0170 F8E9 0171 F8E9 tastA: ; se A lancia direttamente il bootstrap multiplo 0172 F8E9 21 8E FD ld hl,out7 ; messaggio da visualizzare sul display 0173 F8EC CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0174 F8EF 3E 06 ld a,06h ; seleziona il banco della 2390 modificata per non fare il check sul disco di boot 0175 F8F1 D3 5F out (banco),a 0176 F8F3 C3 7D F1 jp 0f17dh ; salta direttamente al BOOT 0177 F8F6 0178 F8F6 tastB: ; se B lancia il loader del basic da 5.5 K 0179 F8F6 CD 41 F9 call disp1 ; non visualizza alcun messaggio sui display e inizializza i video 0180 F8F9 3E 04 ld a,04h ; seleziona il banco del monitor esadecimale originale 0181 F8FB 11 00 80 ld de,08000h ; seleziona il banco indicato da A e lo sposta in ram 0182 F8FE CD 4D F9 call setban 0183 F901 3E 18 ld a,18h ; seleziona il banco del loader del basic da 5.5 K su cassetta 0184 F903 11 00 00 ld de,00000h ; seleziona il banco indicato da A e lo sposta in ram 0185 F906 CD 4D F9 call setban 0186 F909 C3 69 00 jp 0069h ; salta al loader 0187 F90C 0188 F90C tastC: ; se C lancia la prova tastiera 0189 F90C 21 96 FD ld hl,out8 ; messaggio da visualizzare sul display 0190 F90F CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0191 F912 C3 61 FA jp key 0192 F915 0193 F915 tastD: ; se D salta a 0000h 0194 F915 21 9E FD ld hl,out9 ; messaggio da visualizzare sul display 0195 F918 CD 3E F9 call disp ; visualizza il messaggio sui display e inizializza i video 0196 F91B C3 00 00 jp 0000h 0197 F91E 0198 F91E tastE: ; se E salta a 1000h senza modificare i display ed i monitor 0199 F91E C3 00 10 jp 01000h 0200 F921 0201 F921 tastF: ; se F sposta le routines di stampa per monitor esadecimale a 0070 0202 F921 3E 07 ld a,07h ; seleziona il banco delle routines di stampa 0203 F923 11 70 00 ld de,00070h ; seleziona il banco indicato da A e lo sposta in ram 0204 F926 CD 4D F9 call setban 0205 F929 3E 01 ld a,01h ; seleziona il banco della 2390 0206 F92B D3 5F out (banco),a 0207 F92D C3 2F F8 jp tast0 0208 F930 0209 F930 tast10: ; se RETURN cambia pagina di menù 0210 F930 D9 exx ; carica il numero di pagina visualizzata in A 0211 F931 79 ld a,c 0212 F932 D9 exx 0213 F933 FE 01 cp 01h ; confronta il valore di A con 1 0214 F935 CC CD F9 call z,vmenu2 ; pulisce i video visualizza la pagina di menù appropriata 0215 F938 C4 C4 F9 call nz,vmenu1 0216 F93B C3 38 F8 jp tast0a 0217 F93E 0218 F93E ;------------------------------------------------------ 0219 F93E ; visualizza il messaggio sui display, spegne il cursore sul video nuovo e inizializza i video 0220 F93E ; Se HL=0 non visualizza il messaggio sui display 0221 F93E ; Sporca AF 0222 F93E 0223 F93E CD 4F FA disp: call msg ; Visualizza il messaggio indicato da HL sui display 0224 F941 3E 20 disp1: ld a,20h ; Spegne il cursore sul video nuovo 0225 F943 CD BB F9 call cursor 0226 F946 CD 7B F9 disp2: call initv ; Inizializza il video vecchio 0227 F949 CD A0 F9 call initn ; Inizializza il video nuovo 0228 F94C C9 ret 0229 F94D 0230 F94D ;------------------------------------------------------ 0231 F94D ; Seleziona il banco indicato da A e lo sposta all'indirizzo indicato da DE 0232 F94D ; Sporca tutti i registri 0233 F94D 0234 F94D D3 5F setban: out (banco),a ; seleziona il banco 0235 F94F 21 00 F0 ld hl,0f000h ; sposta il banco in ram 0236 F952 01 00 08 ld bc,0800h 0237 F955 ED B0 ldir 0238 F957 C9 ret 0239 F958 0240 F958 ;------------------------------------------------------ 0241 F958 ; controlla se la scheda video vecchia è presente. Per farlo verifica il cambiamento della ritraccia video 0242 F958 ; se la scheda video vecchia esiste ritorna 00h in B' 0243 F958 ; se la scheda video vecchia non esiste ritorna FFh in B' 0244 F958 0245 F958 F5 checv: push af 0246 F959 E5 push hl 0247 F95A 0248 F95A D9 exx ; mette 00h in B' 0249 F95B 06 00 ld b,00h 0250 F95D D9 exx 0251 F95E 0252 F95E 21 00 00 ld hl,00000h ; inizializza il contatore 0253 F961 0254 F961 23 checv1: inc hl ; attende al massimo fino a che HL non diventa 1000h 0255 F962 7C ld a,h ; Infatti la ritraccia a "1" come tempo resta al massimo con HL a 0111h 0256 F963 FE 10 cp 10h ; Se impiega più tempo significa che la scheda LX.388 non è presente 0257 F965 20 06 jr nz,checv2 0258 F967 0259 F967 D9 exx ; se la LX.388 non è presente carica FF in B' ed esce 0260 F968 06 FF ld b,0ffh 0261 F96A D9 exx 0262 F96B 18 06 jr checv3 0263 F96D 0264 F96D DB EB checv2: in a,(0ebh) ; attende la ritraccia video 0265 F96F CB 7F bit 7,a 0266 F971 20 EE jr nz,checv1 0267 F973 0268 F973 E1 checv3: pop hl 0269 F974 F1 pop af 0270 F975 C9 ret 0271 F976 0272 F976 ;------------------------------------------------------ 0273 F976 ; controlla se è stata rilevata la scheda video vecchia 0274 F976 ; ritorna Z a 0 se non c'è, Z a 1 se c'è 0275 F976 0276 F976 D9 chect: exx ; recupera il valore dal registro B' 0277 F977 78 ld a,b 0278 F978 D9 exx 0279 F979 B7 or a ; imposta il flag Z 0280 F97A C9 ret 0281 F97B 0282 F97B ;------------------------------------------------------ 0283 F97B ; pulizia del video vecchio 0284 F97B 0285 F97B E5 initv: push hl 0286 F97C D5 push de 0287 F97D C5 push bc 0288 F97E 21 00 EC ld hl,0ec00h 0289 F981 11 01 EC ld de,0ec01h 0290 F984 36 20 ld (hl),20h 0291 F986 01 FF 01 ld bc,01ffh 0292 F989 CD 92 F9 call waitv ; attende la ritraccia 0293 F98C ED B0 ldir 0294 F98E C1 pop bc 0295 F98F D1 pop de 0296 F990 E1 pop hl 0297 F991 C9 ret 0298 F992 0299 F992 ;------------------------------------------------------ 0300 F992 ; attende la ritraccia del video vecchio 0301 F992 0302 F992 F5 waitv: push af 0303 F993 0304 F993 CD 76 F9 call chect ; esce se non esiste la scheda video vecchia 0305 F996 20 06 jr nz,waitv2 0306 F998 0307 F998 DB EB waitv1: in a,(0ebh) ; attende la ritraccia video 0308 F99A CB 7F bit 7,a 0309 F99C 20 FA jr nz,waitv1 0310 F99E 0311 F99E F1 waitv2: pop af 0312 F99F C9 ret 0313 F9A0 0314 F9A0 ;------------------------------------------------------ 0315 F9A0 ; pulizia del video nuovo 0316 F9A0 0317 F9A0 F5 initn: push af 0318 F9A1 E5 push hl 0319 F9A2 21 00 00 ld hl,0h 0320 F9A5 CD 6E F0 initn1: call lf06e ; carica in R18 e R19 l'indirizzo (HL) del carattere da visualizzare 0321 F9A8 0322 F9A8 3E 20 ld a,20h ; imposta il carattere a "blank" 0323 F9AA CD 09 FA call writen ; scrive il carattere 0324 F9AD 0325 F9AD 23 inc hl 0326 F9AE 7D ld a,l 0327 F9AF FE 81 cp 81h 0328 F9B1 20 F2 jr nz,initn1 0329 F9B3 7C ld a,h 0330 F9B4 FE 07 cp 07h 0331 F9B6 20 ED jr nz,initn1 0332 F9B8 0333 F9B8 E1 pop hl 0334 F9B9 F1 pop af 0335 F9BA C9 ret 0336 F9BB 0337 F9BB ;------------------------------------------------------ 0338 F9BB ; accende o spegne il cursore sul video nuovo 0339 F9BB ; A=00h accende, A=20h spegne 0340 F9BB 0341 F9BB F5 cursor: push af 0342 F9BC 0343 F9BC 3E 0A ld a,0ah ; seleziona il registro R10 0344 F9BE D3 8C out (8ch),a 0345 F9C0 F1 pop af ; scrive il valore 32 (20h) per spegnere il cursore 0346 F9C1 D3 8D out (8dh),a 0347 F9C3 0348 F9C3 C9 ret 0349 F9C4 0350 F9C4 ;------------------------------------------------------ 0351 F9C4 ; Subroutine per la visualizzazione del menù sui video 0352 F9C4 ; 0353 F9C4 0354 F9C4 21 E1 FA vmenu1: ld hl,menu1 ; visualizza la 1° pagina del menu 0355 F9C7 D9 exx ; carica in C' il numero della pagina visualizzata 0356 F9C8 0E 01 ld c,01h 0357 F9CA D9 exx 0358 F9CB 18 07 jr vis 0359 F9CD 0360 F9CD 21 33 FC vmenu2: ld hl,menu2 ; visualizza la 2° pagina del menu 0361 F9D0 D9 exx ; carica in C' il numero della pagina visualizzata 0362 F9D1 0E 02 ld c,02h 0363 F9D3 D9 exx 0364 F9D4 0365 F9D4 CD 41 F9 vis: call disp1 ; pulisce i video 0366 F9D7 0367 F9D7 F5 push af 0368 F9D8 E5 vis1: push hl 0369 F9D9 CD 32 FA call nloc ; calcola in DE l'indirizzo del video nuovo in base alla riga/colonna nella locazione puntata da HL e HL+1 0370 F9DC D5 push de 0371 F9DD E1 pop hl 0372 F9DE CD 6E F0 call lf06e ; carica in R18 e R19 l'indirizzo (HL) del carattere da visualizzare 0373 F9E1 0374 F9E1 E1 pop hl 0375 F9E2 CD 25 FA call vloc ; calcola in DE l'indirizzo del video vecchio in base alla riga/colonna nella locazione puntata da HL e HL+1 0376 F9E5 0377 F9E5 7E vis2: ld a,(hl) ; recupera il carattere da scrivere 0378 F9E6 CD 92 F9 call waitv ; attende la ritraccia del video vecchio 0379 F9E9 12 ld (de),a ; visualizza il carattere sul video vecchio 0380 F9EA 13 inc de 0381 F9EB 0382 F9EB CD 09 FA call writen ; attende la ritraccia e visualizza il carattere sul video nuovo 0383 F9EE 0384 F9EE 23 inc hl 0385 F9EF AF xor a ; controlla se il prossimo carattere è 00h 0386 F9F0 BE cp (hl) 0387 F9F1 20 F2 jr nz,vis2 0388 F9F3 23 inc hl 0389 F9F4 2F cpl ; controlla se il prossimo carattere è 0ffh 0390 F9F5 BE cp (hl) ; se no, ricarica la successiva prima posizione e looppa 0391 F9F6 20 E0 jr nz,vis1 0392 F9F8 0393 F9F8 21 64 FD ld hl,curs ; calcola in DE l'indirizzo del cursore in base alla riga/colonna nella locazione puntata da HL e HL+1 0394 F9FB CD 32 FA call nloc 0395 F9FE D5 push de 0396 F9FF E1 pop hl 0397 FA00 CD 60 F0 call lf060 ; carica in R14, R15, R18 e R19 l'indirizzo (HL) del cursore e del carattere da visualizzare 0398 FA03 0399 FA03 AF xor a ; accende il cursore sul video nuovo 0400 FA04 CD BB F9 call cursor 0401 FA07 0402 FA07 F1 pop af 0403 FA08 C9 ret 0404 FA09 0405 FA09 ;------------------------------------------------------ 0406 FA09 ; scrive il carattere presente in A sul video nuovo 0407 FA09 0408 FA09 CD 1C FA writen: call waitn ; attende la ritraccia 0409 FA0C D3 80 out (80h),a ; scrive il carattere 0410 FA0E F5 push af 0411 FA0F 3E 1F ld a,1fh ; imposta gli attributi del carattere 0412 FA11 D3 8E out (8eh),a 0413 FA13 3E 1F ld a,31 ; update 0414 FA15 D3 8C out (8ch),a 0415 FA17 AF xor a 0416 FA18 D3 8D out (8dh),a 0417 FA1A F1 pop af 0418 FA1B C9 ret 0419 FA1C 0420 FA1C ;------------------------------------------------------ 0421 FA1C ; attende la ritraccia del video nuovo 0422 FA1C 0423 FA1C F5 waitn: push af 0424 FA1D 0425 FA1D DB 8C waitn1: in a,(8ch) 0426 FA1F CB 7F bit 7,a 0427 FA21 28 FA jr z,waitn1 0428 FA23 F1 pop af 0429 FA24 C9 ret 0430 FA25 0431 FA25 ;------------------------------------------------------ 0432 FA25 ; Calcola la locazione del video in base alla riga/colonna nella locazione puntata da HL e HL+1 0433 FA25 ; Chiamare "vloc" per il video vecchio, "nloc" per il video nuovo 0434 FA25 ; Ritorna DE. HL punterà al primo carattere da visualizzare 0435 FA25 0436 FA25 F5 vloc: push af 0437 FA26 06 00 ld b,00h 0438 FA28 4E ld c,(hl) 0439 FA29 E5 push hl 0440 FA2A 21 00 EC ld hl,0ec00h 0441 FA2D 11 20 00 ld de,00020h 0442 FA30 18 0B jr loc1 0443 FA32 0444 FA32 F5 nloc: push af 0445 FA33 06 00 ld b,00h 0446 FA35 4E ld c,(hl) 0447 FA36 E5 push hl 0448 FA37 21 58 01 ld hl,00158h ; offset per centrare la videata sul video nuovo da 80x24 0449 FA3A 11 50 00 ld de,00050h 0450 FA3D 0451 FA3D 79 loc1: ld a,c 0452 FA3E B7 or a ; cp 00h 0453 FA3F 28 04 jr z,loc2 0454 FA41 19 add hl,de 0455 FA42 0D dec c 0456 FA43 18 F8 jr loc1 0457 FA45 0458 FA45 EB loc2: ex de,hl 0459 FA46 E1 pop hl 0460 FA47 23 inc hl 0461 FA48 4E ld c,(hl) 0462 FA49 EB ex de,hl 0463 FA4A 09 add hl,bc 0464 FA4B EB ex de,hl 0465 FA4C 23 inc hl 0466 FA4D F1 pop af 0467 FA4E C9 ret 0468 FA4F 0469 FA4F ;------------------------------------------------------ 0470 FA4F ; Visualizza il messaggio puntato da HL sui display della tastiera esadecimale 0471 FA4F 0472 FA4F F5 msg: push af 0473 FA50 C5 push bc 0474 FA51 01 F7 08 ld bc,08F7h 0475 FA54 7E msg1: ld a,(hl) 0476 FA55 ED 79 out (c),a 0477 FA57 23 inc hl 0478 FA58 0D dec c 0479 FA59 05 dec b 0480 FA5A AF xor a 0481 FA5B B8 cp b 0482 FA5C 20 F6 jr nz,msg1 0483 FA5E C1 pop bc 0484 FA5F F1 pop af 0485 FA60 C9 ret 0486 FA61 0487 FA61 0488 FA61 ;------------------------------------------------------ 0489 FA61 ; ROUTINE PER LA PROVA TASTIERA 0490 FA61 0491 FA61 CD 7B F9 key: call initv 0492 FA64 01 20 00 ld bc,0020h 0493 FA67 0494 FA67 21 00 EC iniz: ld hl,0ec00h 0495 FA6A DB EA in a,(0eah) ; input da tastiera vecchia 0496 FA6C CD 7C FA call keyvis 0497 FA6F 0498 FA6F DB 85 in a,(085h) ; input da tastiera nuova 0499 FA71 CD 7C FA call keyvis 0500 FA74 0501 FA74 DB 85 in a,(085h) ; input da tastiera nuova complementato 0502 FA76 2F cpl 0503 FA77 CD 7C FA call keyvis 0504 FA7A 0505 FA7A 18 EB jr iniz 0506 FA7C 0507 FA7C 0508 FA7C CD 88 FA keyvis: call key1 ; visualizza il dato come arriva da tastiera 0509 FA7F 09 add hl,bc ; si posiziona sulla riga successiva 0510 FA80 0511 FA80 E6 7F and 7fh ; visualizza il dato con lo strobe a 0 0512 FA82 CD 88 FA call key1 0513 FA85 09 add hl,bc ; si posiziona due righe dopo 0514 FA86 09 add hl,bc 0515 FA87 0516 FA87 C9 ret 0517 FA88 0518 FA88 E5 key1: push hl 0519 FA89 F5 push af 0520 FA8A F5 push af 0521 FA8B F1 loop: pop af 0522 FA8C 07 rlca 0523 FA8D 38 07 jr c,uno 0524 FA8F CD 92 F9 call waitv 0525 FA92 36 30 ld (hl),'0' 0526 FA94 18 05 jr cont 0527 FA96 CD 92 F9 uno: call waitv 0528 FA99 36 31 ld (hl),'1' 0529 FA9B F5 cont: push af 0530 FA9C 23 inc hl 0531 FA9D 7D ld a,l 0532 FA9E E6 0F and 0fh 0533 FAA0 FE 08 cp 08h 0534 FAA2 20 E7 jr nz,loop 0535 FAA4 F1 pop af 0536 FAA5 0537 FAA5 CD CD FA call sep ; separatore 0538 FAA8 0539 FAA8 F1 pop af ; visualizza il byte 0540 FAA9 F5 push af 0541 FAAA 1F rra 0542 FAAB 1F rra 0543 FAAC 1F rra 0544 FAAD 1F rra 0545 FAAE E6 0F and 0fh 0546 FAB0 CD D7 FA call lett ; somma l'offset per l'ASCII del numero o della lettera 0547 FAB3 CD 92 F9 call waitv 0548 FAB6 77 ld (hl),a 0549 FAB7 23 inc hl 0550 FAB8 F1 pop af 0551 FAB9 F5 push af 0552 FABA E6 0F and 0fh 0553 FABC CD D7 FA call lett 0554 FABF CD 92 F9 call waitv 0555 FAC2 77 ld (hl),a 0556 FAC3 0557 FAC3 CD CD FA call sep ; separatore 0558 FAC6 0559 FAC6 F1 pop af ; visualizza il carattere ASCII 0560 FAC7 CD 92 F9 call waitv 0561 FACA 77 ld (hl),a 0562 FACB E1 pop hl 0563 FACC C9 ret 0564 FACD 0565 FACD 23 sep: inc hl ; separatore 0566 FACE 23 inc hl 0567 FACF CD 92 F9 call waitv 0568 FAD2 36 2D ld (hl),'-' 0569 FAD4 23 inc hl 0570 FAD5 23 inc hl 0571 FAD6 C9 ret 0572 FAD7 0573 FAD7 FE 0A lett: cp 0Ah 0574 FAD9 38 03 jr c,lett1 ; salta se minore 0575 FADB C6 37 add a,55 0576 FADD C9 ret 0577 FADE C6 30 lett1: add a,'0' 0578 FAE0 C9 ret 0579 FAE1 0580 FAE1 0581 FAE1 ;------------------------------------------------------ 0582 FAE1 0583 FAE1 00065A383020menu1: .byte 000h, 006h, "Z80 NUOVA ELETTRONICA", 00h 0583 FAE7 4E554F564120454C455454524F4E49434100 0584 FAF9 0108424F4F54 .byte 001h, 008h, "BOOTSTRAP V. ", version, 00h 0584 FAFF 53545241502020562E20312E3300 0585 FB0D 011D312F3200 .byte 001h, 01dh, "1/2", 00h 0586 FB13 030031203E20 .byte 003h, 000h, "1 > BOOT BASIC 5.5K SU " 0586 FB19 424F4F5420424153494320352E354B20535520 0587 FB2C 464C4F505059 .byte "FLOPPY", 00h 0587 FB32 00 0588 FB33 040032203E20 .byte 004h, 000h, "2 > BOOT NE-DOS 1.5", 00h 0588 FB39 424F4F54204E452D444F5320312E3500 0589 FB49 050033203E20 .byte 005h, 000h, "3 > BOOT NE-DOS GRAFIC 1.0", 00h 0589 FB4F 424F4F54204E452D444F532047524146494320312E3000 0590 FB66 060034203E20 .byte 006h, 000h, "4 > BOOT S.O.N.E.", 00h 0590 FB6C 424F4F5420532E4F2E4E2E452E00 0591 FB7A 070035203E20 .byte 007h, 000h, "5 > BASIC 16K IN RAM", 00h 0591 FB80 42415349432031364B20494E2052414D00 0592 FB91 080036203E20 .byte 008h, 000h, "6 > MONITOR ORIGINALE " 0592 FB97 4D4F4E49544F52204F524947494E414C4520 0593 FBA9 4E4F20494E54 .byte "NO INTERR.", 00h 0593 FBAF 4552522E00 0594 FBB4 090037203E20 .byte 009h, 000h, "7 > MONITOR SP RILOC. " 0594 FBBA 4D4F4E49544F522053502052494C4F432E20 0595 FBCC 4E4F20494E54 .byte "NO INTERR.", 00h 0595 FBD2 4552522E00 0596 FBD7 0A0038203E20 .byte 00Ah, 000h, "8 > MONITOR A VIDEO " 0596 FBDD 4D4F4E49544F52204120564944454F20 0597 FBED 2852494C4F43 .byte "(RILOCATO)", 00h 0597 FBF3 41544F2900 0598 FBF8 0B0043523E20 .byte 00Bh, 000h, "CR> CAMBIA PAGINA", 00h 0598 FBFE 43414D42494120504147494E4100 0599 FC0C 0D0F3E203C00 .byte 00Dh, 00Fh, "> <", 00h 0600 FC12 0F0028432920 .byte 00Fh, 000h, "(C) ROBERTO BAZZANO " 0600 FC18 524F424552544F2042415A5A414E4F20 0601 FC28 323030302D32 .byte "2000-" , anno, 00h 0601 FC2E 30323200 0602 FC32 FF .byte 0ffh 0603 FC33 0604 FC33 00065A383020menu2: .byte 000h, 006h, "Z80 NUOVA ELETTRONICA", 00h 0604 FC39 4E554F564120454C455454524F4E49434100 0605 FC4B 0108424F4F54 .byte 001h, 008h, "BOOTSTRAP V. ", version, 00h 0605 FC51 53545241502020562E20312E3300 0606 FC5F 011D322F3200 .byte 001h, 01dh, "2/2", 00h 0607 FC65 030039203E20 .byte 003h, 000h, "9 > MONITOR ORIGINALE " 0607 FC6B 4D4F4E49544F52204F524947494E414C4520 0608 FC7D 2852494C4F43 .byte "(RILOCATO)", 00h 0608 FC83 41544F2900 0609 FC88 040041203E20 .byte 004h, 000h, "A > BOOT IMMEDIATO NE-DOS", 00h 0609 FC8E 424F4F5420494D4D45444941544F204E452D444F5300 0610 FCA4 050042203E20 .byte 005h, 000h, "B > LOADER BASIC 5.5K SU " 0610 FCAA 4C4F4144455220424153494320352E354B20535520 0611 FCBF 434153532E00 .byte "CASS.", 00h 0612 FCC5 060043203E20 .byte 006h, 000h, "C > PROVA TASTIERA", 00h 0612 FCCB 50524F564120544153544945524100 0613 FCDA 070044203E20 .byte 007h, 000h, "D > RESTART A 0000H", 00h 0613 FCE0 52455354415254204120303030304800 0614 FCF0 080045203E20 .byte 008h, 000h, "E > RESTART A 1000H", 00h 0614 FCF6 52455354415254204120313030304800 0615 FD06 090046203E20 .byte 009h, 000h, "F > LOAD ROUTINES STAMPA " 0615 FD0C 4C4F414420524F5554494E4553205354414D504120 0616 FD21 412030303730 .byte "A 0070H", 00h 0616 FD27 4800 0617 FD29 0B0043523E20 .byte 00Bh, 000h, "CR> CAMBIA PAGINA", 00h 0617 FD2F 43414D42494120504147494E4100 0618 FD3D 0D0F3E203C00 .byte 00Dh, 00Fh, "> <", 00h 0619 FD43 0F0028432920 .byte 00Fh, 000h, "(C) ROBERTO BAZZANO " 0619 FD49 524F424552544F2042415A5A414E4F20 0620 FD59 323030302D32 .byte "2000-", anno, 00h 0620 FD5F 30323200 0621 FD63 FF .byte 0ffh 0622 FD64 0623 FD64 0D 10 curs: .byte 00Dh, 010h ; riga/colonna in cui posizionare il cursore 0624 FD66 0625 FD66 ; Tabelle per visualizzazione su display tastiera esadecimale 0626 FD66 ; 0627 FD66 ; 0628 FD66 ; Valori per l'accensione dei segmenti del display: 0629 FD66 ; 0630 FD66 ; 1 0631 FD66 ; - bit a 1 spegne il segmento 0632 FD66 ; 32 | | 2 0633 FD66 ; - 64 F0 = display a destra 0634 FD66 ; 16 | | 4 !! 0635 FD66 ; - F7 = display a sinistra 0636 FD66 ; 8 0637 FD66 ; 128 = punto decimale 0638 FD66 0639 FD66 FF9286C786C6out0: .byte 0ffh, 092h, 086h, 0C7h, 086h, 0C6h, 087h, 0ffh ; select 0639 FD6C 87FF 0640 FD6E AB86A1C092FFout1: .byte 0ABh, 086h, 0A1h, 0C0h, 092h, 0FFh, 079h, 092h ; nedos 1.5 0640 FD74 7992 0641 FD76 AB86A1C092FFout2: .byte 0ABh, 086h, 0A1h, 0C0h, 092h, 0FFh, 042h, 0F9h ; nedos G.1 0641 FD7C 42F9 0642 FD7E 838892F9C6FFout3: .byte 083h, 088h, 092h, 0F9h, 0C6h, 0FFh, 0F9h, 082h ; basic 16 0642 FD84 F982 0643 FD86 C8C0ABF987C0out4: .byte 0C8h, 0C0h, 0ABh, 0F9h, 087h, 0C0h, 0AFh, 0FFh ; monitor 0643 FD8C AFFF 0644 FD8E FFFF83C0C087out7: .byte 0FFh, 0FFh, 083h, 0C0h, 0C0h, 087h, 0FFh, 0FFh ; boot 0644 FD94 FFFF 0645 FD96 FFFF87869287out8: .byte 0FFh, 0FFh, 087h, 086h, 092h, 087h, 0FFh, 0FFh ; test 0645 FD9C FFFF 0646 FD9E FFFFC19286AFout9: .byte 0FFh, 0FFh, 0C1h, 092h, 086h, 0AFh, 0FFh, 0FFh ; user 0646 FDA4 FFFF 0647 FDA6 838892F9C6FFout10: .byte 083h, 088h, 092h, 0F9h, 0C6h, 0FFh, 012h, 092h ; basic 5.5 0647 FDAC 1292 0648 FDAE FFFF92C0AB86out11: .byte 0FFh, 0FFh, 092h, 0C0h, 0ABh, 086h, 0FFh, 0FFh ; sone 0648 FDB4 FFFF 0649 FDB6 0650 FDB6 0651 FDB6 ;------------------------------------------------------ 0652 FDB6 ; 0653 FDB6 ; Nuova routine di input tastiera per il monitor esadecimale 0654 FDB6 ; Sostituisce la 80AA e accetta l'input dalla tastiera alfanumerica vecchia o nuova 0655 FDB6 ; o dalla tastiera esadecimale convertendo il valore ricevuto in modo da essere 0656 FDB6 ; compatibile con la 80AA 0657 FDB6 ; 0658 FDB6 ; Dati ricevuti dalla tastiera: 0659 FDB6 ; Numeri da 0 a 9: da 30h a 39h 0660 FDB6 ; Lettere da A ad F: da 61h a 66h 0661 FDB6 ; Shift+numero da 1 a 9: da 21h a 29h 0662 FDB6 ; Shift+lettere da A ad F: da 41h a 46h 0663 FDB6 ; Return: 0dh 0664 FDB6 0665 FDB6 0666 FDB6 C5 input: push bc 0667 FDB7 D5 push de 0668 FDB8 E5 push hl 0669 FDB9 0670 FDB9 CD 76 F9 t1: call chect ; Se non c'è la scheda video vecchia salta il controllo e passa subito alla tastiera nuova 0671 FDBC 20 06 jr nz,t2 0672 FDBE 0673 FDBE DB EA t1x: in a,(0eah) ; tastiera vecchia 0674 FDC0 CB 7F bit 7,a 0675 FDC2 20 FA jr nz,t1x 0676 FDC4 0677 FDC4 DB 85 t2: in a,(085h) ; tastiera nuova 0678 FDC6 CB 7F bit 7,a 0679 FDC8 28 FA jr z,t2 0680 FDCA 21 56 04 t2es1: ld hl,0456h ; tastiera esadecimale 0681 FDCD DB F0 t2es2: in a,(0f0h) 0682 FDCF CB 7F bit 7,a 0683 FDD1 28 F7 jr z,t2es1 0684 FDD3 2B t2es3: dec hl 0685 FDD4 7C ld a,h 0686 FDD5 B5 or l 0687 FDD6 20 F5 jr nz,t2es2 0688 FDD8 0689 FDD8 ; Input da tastiere 0690 FDD8 CD 76 F9 t2a: call chect ; Se non c'è la scheda video vecchia salta il controllo e passa subito alla tastiera nuova 0691 FDDB 20 06 jr nz,t2ax 0692 FDDD 0693 FDDD DB EA in a,(0eah) ; tastiera vecchia 0694 FDDF CB 7F bit 7,a 0695 FDE1 20 38 jr nz,t2b 0696 FDE3 0697 FDE3 DB 85 t2ax: in a,(085h) ; tastiera nuova 0698 FDE5 2F cpl 0699 FDE6 CB 7F bit 7,a 0700 FDE8 20 31 jr nz,t2b 0701 FDEA DB F0 in a,(0f0h) ; tastiera esadecimale 0702 FDEC CB 7F bit 7,a 0703 FDEE 28 10 jr z,tes4 0704 FDF0 18 E6 jr t2a ; se non ho premuto nulla sulle tre tastiere allora looppa 0705 FDF2 0706 FDF2 ; Input da tastiera esadecimale 0707 FDF2 21 56 04 tes1: ld hl,0456h 0708 FDF5 0709 FDF5 DB F0 tes2: in a,(0f0h) 0710 FDF7 CB 7F bit 7,a 0711 FDF9 28 F7 jr z,tes1 0712 FDFB 2B tes3: dec hl 0713 FDFC 7C ld a,h 0714 FDFD B5 or l 0715 FDFE 20 F5 jr nz,tes2 0716 FE00 0717 FE00 DB F0 tes4: in a,(0f0h) 0718 FE02 CB 7F bit 7,a 0719 FE04 20 FA jr nz,tes4 0720 FE06 47 ld b,a 0721 FE07 21 05 00 ld hl,0005h 0722 FE0A CD 5C FE call rit 0723 FE0D 0724 FE0D DB F0 tes5: in a,(0f0h) 0725 FE0F 4F ld c,a 0726 FE10 E6 7F and 7fh 0727 FE12 B8 cp b 0728 FE13 20 F8 jr nz,tes5 0729 FE15 CB 79 bit 7,c 0730 FE17 20 D9 jr nz,tes1 0731 FE19 0732 FE19 18 3D tes6: jr texit 0733 FE1B 0734 FE1B ; Conversione dato per tastiere alfanumeriche 0735 FE1B E6 7F t2b: and 7fh 0736 FE1D 0737 FE1D FE 0D cp 0dh ; controlla se è stato premuto Return 0738 FE1F 20 04 jr nz,t3 0739 FE21 3E 10 ld a,10h ; se si carica il valore di Control+0 0740 FE23 18 33 jr texit 0741 FE25 0742 FE25 FE 3A t3: cp 03ah ; controlla se è stato premuto un numero 0743 FE27 30 08 jr nc,t4 0744 FE29 FE 30 cp 030h 0745 FE2B 38 04 jr c,t4 0746 FE2D D6 30 sub 030h ; se si sottrae 30h ed esce 0747 FE2F 18 27 jr texit 0748 FE31 0749 FE31 FE 67 t4: cp 67h ; controlla se è stata premuta una lettera tra A ed F 0750 FE33 30 08 jr nc,t5 0751 FE35 FE 61 cp 61h 0752 FE37 38 04 jr c,t5 0753 FE39 D6 57 sub 57h ; se si sottrae 57h ed esce 0754 FE3B 18 1B jr texit 0755 FE3D 0756 FE3D FE 2A t5: cp 2ah ; controlla se è stato premuto shift+numero (escluso 0) 0757 FE3F 30 08 jr nc,t6 0758 FE41 FE 21 cp 21h 0759 FE43 38 04 jr c,t6 0760 FE45 D6 10 sub 10h ; se si sottrae 10h ed esce 0761 FE47 18 0F jr texit 0762 FE49 0763 FE49 FE 47 t6: cp 47h ; controlla se è stato premuto shift+lettera da A ad F 0764 FE4B 30 08 jr nc,t7 0765 FE4D FE 41 cp 41h 0766 FE4F 38 04 jr c,t7 0767 FE51 D6 27 sub 27h ; se si sottrae 27h ed esce 0768 FE53 18 03 jr texit 0769 FE55 0770 FE55 C3 B9 FD t7: jp t1 0771 FE58 0772 FE58 E1 texit: pop hl 0773 FE59 D1 pop de 0774 FE5A C1 pop bc 0775 FE5B C9 ret 0776 FE5C 0777 FE5C ; Genera un ritardo 0778 FE5C 0779 FE5C E5 rit: push hl 0780 FE5D F5 push af 0781 FE5E 0782 FE5E CD 69 FE rit1: call rit2 0783 FE61 2B dec hl 0784 FE62 7C ld a,h 0785 FE63 B5 or l 0786 FE64 20 F8 jr nz,rit1 0787 FE66 F1 pop af 0788 FE67 E1 pop hl 0789 FE68 C9 ret 0790 FE69 0791 FE69 F5 rit2: push af 0792 FE6A D5 push de 0793 FE6B 11 47 00 ld de,0047h 0794 FE6E 0795 FE6E 1B rit3: dec de 0796 FE6F 7A ld a,d 0797 FE70 B3 or e 0798 FE71 20 FB jr nz,rit3 0799 FE73 D1 pop de 0800 FE74 F1 pop af 0801 FE75 C9 ret 0802 FE76 0803 FE76 0804 FE76 ;------------------------------------------------------ 0805 FE76 ; 0806 FE76 ; Nuova routine di output su video per monitor esadecimale 0807 FE76 ; Sostituisce la 80EC e accetta l'input dalle locazioni da 0000h a 0007h 0808 FE76 ; convertendo il valore letto in modo da essere compatibile con la 80EC 0809 FE76 ; 0810 FE76 0811 FE76 F5 video: push af 0812 FE77 C5 push bc 0813 FE78 D5 push de 0814 FE79 E5 push hl 0815 FE7A 0816 FE7A CD 76 F9 call chect ; esce se non esiste la scheda video vecchia 0817 FE7D 20 1C jr nz,m3 0818 FE7F 0819 FE7F 11 07 00 m1: ld de,0007h 0820 FE82 01 00 EC ld bc,0ec00h 0821 FE85 0822 FE85 21 A0 FE m2: ld hl,tabout 0823 FE88 C5 push bc 0824 FE89 1A ld a,(de) 0825 FE8A 06 00 ld b,0h 0826 FE8C 4F ld c,a 0827 FE8D 09 add hl,bc 0828 FE8E C1 pop bc 0829 FE8F 0830 FE8F 7E ld a,(hl) 0831 FE90 CD 92 F9 call waitv ; attende la ritraccia video 0832 FE93 02 ld (bc),a 0833 FE94 1D dec e 0834 FE95 0C inc c 0835 FE96 7B ld a,e 0836 FE97 FE FF cp 0ffh 0837 FE99 20 EA jr nz,m2 0838 FE9B 0839 FE9B E1 m3: pop hl 0840 FE9C D1 pop de 0841 FE9D C1 pop bc 0842 FE9E F1 pop af 0843 FE9F C9 ret 0844 FEA0 0845 FEA0 303132333435tabout: .byte "0123456789ABCDEF" 0845 FEA6 36373839414243444546 0846 FEB0 2D204D522348 .byte "-", " ", "M", "R", "#", "H", "L", "P", "C", "G" 0846 FEB6 4C504347 0847 FEBA 4E5152545556 .byte "NQRTUVJY S" 0847 FEC0 4A592053 0848 FEC4 0849 FEC4 0850 FEC4 ;------------------------------------------------------ 0851 FEC4 ; Jump table per il richiamo della routine di gestione della voce di menu selezionata 0852 FEC4 0853 FEC4 6B F8 tabtas: .dw tast1 0854 FEC6 78 F8 .dw tast2 0855 FEC8 85 F8 .dw tast3 0856 FECA 92 F8 .dw tast4 0857 FECC 9F F8 .dw tast5 0858 FECE B6 F8 .dw tast6 0859 FED0 C4 F8 .dw tast7 0860 FED2 D2 F8 .dw tast8 0861 FED4 DF F8 .dw tast9 0862 FED6 E9 F8 .dw tastA 0863 FED8 F6 F8 .dw tastB 0864 FEDA 0C F9 .dw tastC 0865 FEDC 15 F9 .dw tastD 0866 FEDE 1E F9 .dw tastE 0867 FEE0 21 F9 .dw tastF 0868 FEE2 30 F9 .dw tast10 0869 FEE4 0870 FEE4 0871 FEE4 ;------------------------------------------------------ 0872 FEE4 0873 FFFF .org 0ffffh 0874 FFFF 00 .byte 00h 0875 10000 0876 10000 .end Type Key: N=NULL_SEG C=CODE_SEG B=BIT_SEG X=EXTD_SEG D=DATA_SEG L=Local E=Export Value Type Label ----- ---- ------------------------------ 005F N banco F958 N checv F961 N checv1 F96D N checv2 F973 N checv3 F976 N chect F9BB N cursor FA9B N cont FD64 N curs F93E N disp F941 N disp1 F946 N disp2 F97B N initv F9A0 N initn F9A5 N initn1 FA67 N iniz FDB6 N input FA61 N key FA7C N keyvis FA88 N key1 F060 N lf060 F06E N lf06e F0A5 N lf0a5 FA3D N loc1 FA45 N loc2 FA8B N loop FAD7 N lett FADE N lett1 FA4F N msg FA54 N msg1 FAE1 N menu1 FC33 N menu2 FE7F N m1 FE85 N m2 FE9B N m3 FA32 N nloc FD66 N out0 FD6E N out1 FD76 N out2 FD7E N out3 FD86 N out4 FD8E N out7 FD96 N out8 FD9E N out9 FDA6 N out10 FDAE N out11 FE5C N rit FE5E N rit1 FE69 N rit2 FE6E N rit3 F809 N start F816 N sp1 F81C N sp2 F81F N sp3 F94D N setban FACD N sep F82F N tast0 F838 N tast0a F854 N tast0b F856 N tast0c F85B N tast0d F86B N tast1 F878 N tast2 F885 N tast3 F892 N tast4 F89F N tast5 F8AA N tast5a F8B6 N tast6 F8C4 N tast7 F8D2 N tast8 F8DF N tast9 F8E9 N tastA F8F6 N tastB F90C N tastC F915 N tastD F91E N tastE F921 N tastF F930 N tast10 FDB9 N t1 FDBE N t1x FDC4 N t2 FDCA N t2es1 FDCD N t2es2 FDD3 N t2es3 FDD8 N t2a FDE3 N t2ax FDF2 N tes1 FDF5 N tes2 FDFB N tes3 FE00 N tes4 FE0D N tes5 FE19 N tes6 FE1B N t2b FE25 N t3 FE31 N t4 FE3D N t5 FE49 N t6 FE55 N t7 FE58 N texit FEA0 N tabout FEC4 N tabtas FA96 N uno F9C4 N vmenu1 F9CD N vmenu2 F9D4 N vis F9D8 N vis1 F9E5 N vis2 FA25 N vloc FE76 N video F992 N waitv F998 N waitv1 F99E N waitv2 FA09 N writen FA1C N waitn FA1D N waitn1 ADDR 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ----------------------------------------------------- F800 C3 09 F8 C3 B6 FD C3 76 FE F3 21 ED 45 22 66 00 F810 AF D3 D6 21 FF EB 7E 2F 77 BE 28 03 2B 18 F7 2F F820 77 BE 20 F8 F9 3E 01 D3 5F CD A5 F0 CD 58 F9 21 F830 66 FD CD 4F FA CD C4 F9 CD B6 FD FE 10 28 1C 30 F840 F7 FE 01 38 F3 21 64 FD CD 25 FA F5 FE 0A 30 04 F850 C6 30 18 02 C6 37 12 CD 09 FA F1 21 C4 FE 3D CB F860 27 4F AF 47 09 4E 23 46 C5 E1 E9 21 A6 FD CD 3E F870 F9 3E 19 D3 5F C3 00 F0 21 6E FD CD 3E F9 3E 00 F880 D3 5F C3 00 F0 21 76 FD CD 3E F9 3E 01 D3 5F C3 F890 00 F0 21 AE FD CD 3E F9 3E 1A D3 5F C3 00 F0 21 F8A0 7E FD CD 3E F9 3E 08 11 00 00 CD 4D F9 3C 3C FE F8B0 18 20 F7 C3 00 00 CD 41 F9 3E 04 11 00 80 CD 4D F8C0 F9 C3 00 80 CD 41 F9 3E 20 11 00 80 CD 4D F9 C3 F8D0 00 80 21 86 FD CD 3E F9 3E 1C D3 5F C3 00 F0 CD F8E0 41 F9 3E 1E D3 5F C3 00 F0 21 8E FD CD 3E F9 3E F8F0 06 D3 5F C3 7D F1 CD 41 F9 3E 04 11 00 80 CD 4D F900 F9 3E 18 11 00 00 CD 4D F9 C3 69 00 21 96 FD CD F910 3E F9 C3 61 FA 21 9E FD CD 3E F9 C3 00 00 C3 00 F920 10 3E 07 11 70 00 CD 4D F9 3E 01 D3 5F C3 2F F8 F930 D9 79 D9 FE 01 CC CD F9 C4 C4 F9 C3 38 F8 CD 4F F940 FA 3E 20 CD BB F9 CD 7B F9 CD A0 F9 C9 D3 5F 21 F950 00 F0 01 00 08 ED B0 C9 F5 E5 D9 06 00 D9 21 00 F960 00 23 7C FE 10 20 06 D9 06 FF D9 18 06 DB EB CB F970 7F 20 EE E1 F1 C9 D9 78 D9 B7 C9 E5 D5 C5 21 00 F980 EC 11 01 EC 36 20 01 FF 01 CD 92 F9 ED B0 C1 D1 F990 E1 C9 F5 CD 76 F9 20 06 DB EB CB 7F 20 FA F1 C9 F9A0 F5 E5 21 00 00 CD 6E F0 3E 20 CD 09 FA 23 7D FE F9B0 81 20 F2 7C FE 07 20 ED E1 F1 C9 F5 3E 0A D3 8C F9C0 F1 D3 8D C9 21 E1 FA D9 0E 01 D9 18 07 21 33 FC F9D0 D9 0E 02 D9 CD 41 F9 F5 E5 CD 32 FA D5 E1 CD 6E F9E0 F0 E1 CD 25 FA 7E CD 92 F9 12 13 CD 09 FA 23 AF F9F0 BE 20 F2 23 2F BE 20 E0 21 64 FD CD 32 FA D5 E1 FA00 CD 60 F0 AF CD BB F9 F1 C9 CD 1C FA D3 80 F5 3E FA10 1F D3 8E 3E 1F D3 8C AF D3 8D F1 C9 F5 DB 8C CB FA20 7F 28 FA F1 C9 F5 06 00 4E E5 21 00 EC 11 20 00 FA30 18 0B F5 06 00 4E E5 21 58 01 11 50 00 79 B7 28 FA40 04 19 0D 18 F8 EB E1 23 4E EB 09 EB 23 F1 C9 F5 FA50 C5 01 F7 08 7E ED 79 23 0D 05 AF B8 20 F6 C1 F1 FA60 C9 CD 7B F9 01 20 00 21 00 EC DB EA CD 7C FA DB FA70 85 CD 7C FA DB 85 2F CD 7C FA 18 EB CD 88 FA 09 FA80 E6 7F CD 88 FA 09 09 C9 E5 F5 F5 F1 07 38 07 CD FA90 92 F9 36 30 18 05 CD 92 F9 36 31 F5 23 7D E6 0F FAA0 FE 08 20 E7 F1 CD CD FA F1 F5 1F 1F 1F 1F E6 0F FAB0 CD D7 FA CD 92 F9 77 23 F1 F5 E6 0F CD D7 FA CD FAC0 92 F9 77 CD CD FA F1 CD 92 F9 77 E1 C9 23 23 CD FAD0 92 F9 36 2D 23 23 C9 FE 0A 38 03 C6 37 C9 C6 30 FAE0 C9 00 06 5A 38 30 20 4E 55 4F 56 41 20 45 4C 45 FAF0 54 54 52 4F 4E 49 43 41 00 01 08 42 4F 4F 54 53 FB00 54 52 41 50 20 20 56 2E 20 31 2E 33 00 01 1D 31 FB10 2F 32 00 03 00 31 20 3E 20 42 4F 4F 54 20 42 41 FB20 53 49 43 20 35 2E 35 4B 20 53 55 20 46 4C 4F 50 FB30 50 59 00 04 00 32 20 3E 20 42 4F 4F 54 20 4E 45 FB40 2D 44 4F 53 20 31 2E 35 00 05 00 33 20 3E 20 42 FB50 4F 4F 54 20 4E 45 2D 44 4F 53 20 47 52 41 46 49 FB60 43 20 31 2E 30 00 06 00 34 20 3E 20 42 4F 4F 54 FB70 20 53 2E 4F 2E 4E 2E 45 2E 00 07 00 35 20 3E 20 FB80 42 41 53 49 43 20 31 36 4B 20 49 4E 20 52 41 4D FB90 00 08 00 36 20 3E 20 4D 4F 4E 49 54 4F 52 20 4F FBA0 52 49 47 49 4E 41 4C 45 20 4E 4F 20 49 4E 54 45 FBB0 52 52 2E 00 09 00 37 20 3E 20 4D 4F 4E 49 54 4F FBC0 52 20 53 50 20 52 49 4C 4F 43 2E 20 4E 4F 20 49 FBD0 4E 54 45 52 52 2E 00 0A 00 38 20 3E 20 4D 4F 4E FBE0 49 54 4F 52 20 41 20 56 49 44 45 4F 20 28 52 49 FBF0 4C 4F 43 41 54 4F 29 00 0B 00 43 52 3E 20 43 41 FC00 4D 42 49 41 20 50 41 47 49 4E 41 00 0D 0F 3E 20 FC10 3C 00 0F 00 28 43 29 20 52 4F 42 45 52 54 4F 20 FC20 42 41 5A 5A 41 4E 4F 20 32 30 30 30 2D 32 30 32 FC30 32 00 FF 00 06 5A 38 30 20 4E 55 4F 56 41 20 45 FC40 4C 45 54 54 52 4F 4E 49 43 41 00 01 08 42 4F 4F FC50 54 53 54 52 41 50 20 20 56 2E 20 31 2E 33 00 01 FC60 1D 32 2F 32 00 03 00 39 20 3E 20 4D 4F 4E 49 54 FC70 4F 52 20 4F 52 49 47 49 4E 41 4C 45 20 28 52 49 FC80 4C 4F 43 41 54 4F 29 00 04 00 41 20 3E 20 42 4F FC90 4F 54 20 49 4D 4D 45 44 49 41 54 4F 20 4E 45 2D FCA0 44 4F 53 00 05 00 42 20 3E 20 4C 4F 41 44 45 52 FCB0 20 42 41 53 49 43 20 35 2E 35 4B 20 53 55 20 43 FCC0 41 53 53 2E 00 06 00 43 20 3E 20 50 52 4F 56 41 FCD0 20 54 41 53 54 49 45 52 41 00 07 00 44 20 3E 20 FCE0 52 45 53 54 41 52 54 20 41 20 30 30 30 30 48 00 FCF0 08 00 45 20 3E 20 52 45 53 54 41 52 54 20 41 20 FD00 31 30 30 30 48 00 09 00 46 20 3E 20 4C 4F 41 44 FD10 20 52 4F 55 54 49 4E 45 53 20 53 54 41 4D 50 41 FD20 20 41 20 30 30 37 30 48 00 0B 00 43 52 3E 20 43 FD30 41 4D 42 49 41 20 50 41 47 49 4E 41 00 0D 0F 3E FD40 20 3C 00 0F 00 28 43 29 20 52 4F 42 45 52 54 4F FD50 20 42 41 5A 5A 41 4E 4F 20 32 30 30 30 2D 32 30 FD60 32 32 00 FF 0D 10 FF 92 86 C7 86 C6 87 FF AB 86 FD70 A1 C0 92 FF 79 92 AB 86 A1 C0 92 FF 42 F9 83 88 FD80 92 F9 C6 FF F9 82 C8 C0 AB F9 87 C0 AF FF FF FF FD90 83 C0 C0 87 FF FF FF FF 87 86 92 87 FF FF FF FF FDA0 C1 92 86 AF FF FF 83 88 92 F9 C6 FF 12 92 FF FF FDB0 92 C0 AB 86 FF FF C5 D5 E5 CD 76 F9 20 06 DB EA FDC0 CB 7F 20 FA DB 85 CB 7F 28 FA 21 56 04 DB F0 CB FDD0 7F 28 F7 2B 7C B5 20 F5 CD 76 F9 20 06 DB EA CB FDE0 7F 20 38 DB 85 2F CB 7F 20 31 DB F0 CB 7F 28 10 FDF0 18 E6 21 56 04 DB F0 CB 7F 28 F7 2B 7C B5 20 F5 FE00 DB F0 CB 7F 20 FA 47 21 05 00 CD 5C FE DB F0 4F FE10 E6 7F B8 20 F8 CB 79 20 D9 18 3D E6 7F FE 0D 20 FE20 04 3E 10 18 33 FE 3A 30 08 FE 30 38 04 D6 30 18 FE30 27 FE 67 30 08 FE 61 38 04 D6 57 18 1B FE 2A 30 FE40 08 FE 21 38 04 D6 10 18 0F FE 47 30 08 FE 41 38 FE50 04 D6 27 18 03 C3 B9 FD E1 D1 C1 C9 E5 F5 CD 69 FE60 FE 2B 7C B5 20 F8 F1 E1 C9 F5 D5 11 47 00 1B 7A FE70 B3 20 FB D1 F1 C9 F5 C5 D5 E5 CD 76 F9 20 1C 11 FE80 07 00 01 00 EC 21 A0 FE C5 1A 06 00 4F 09 C1 7E FE90 CD 92 F9 02 1D 0C 7B FE FF 20 EA E1 D1 C1 F1 C9 FEA0 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 FEB0 2D 20 4D 52 23 48 4C 50 43 47 4E 51 52 54 55 56 FEC0 4A 59 20 53 6B F8 78 F8 85 F8 92 F8 9F F8 B6 F8 FED0 C4 F8 D2 F8 DF F8 E9 F8 F6 F8 0C F9 15 F9 1E F9 FEE0 21 F9 30 F9 00 00 00 00 00 00 00 00 00 00 00 00 FEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FFA0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FFB0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FFC0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FFD0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FFE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 tasm: Number of errors = 0